//
//  HMHomeTableViewController.swift
//  SinaWeibo
//
//  Created by apple on 16/9/22.
//  Copyright © 2016年 itcast. All rights reserved.
//  1.验证接口数据

import UIKit
import SVProgressHUD
import YYModel


private let cellId = "HMStatusCellId"
class HMHomeTableViewController: HMBaseTableTableViewController {
    
    
    //懒加载数据源数组
    //lazy var statuses: [HMStatus] = [HMStatus]()
    //视图控制器引用viewmodel
    lazy var homeViewModel: HMHomeViewModel = HMHomeViewModel()
    
    override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()
        
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
  
        //用户没有登录的的情况下 tableView实际上没有被创建,此时创建的视图是访客视图 如果没有做判断,程序会直接崩溃
        if !userLogin {
            //设置访客视图信息
            visitorview.updateInfo(tipText: "关注一些人,快回到这里看看有什么惊喜",imageName: nil)
            //直接return
            return
        }
        
        navigationItem.rightBarButtonItem = UIBarButtonItem(imageName: "navigationbar_pop", target: self, action: #selector(push))
        
        //在请求数据之前就开始设置tableView
        setupTableView()
        
        homeViewModel.loadData { (success) in
            if !success {
                
                SVProgressHUD.showError(withStatus: errorTip)
                return
            }
            
            //成功 刷新数据
            self.tableView.reloadData()
        }

    }
    
    //设置tableview
    private func setupTableView() {
        //注册cell
        let nib = UINib(nibName: "HMStatusCell", bundle: nil)
        //let bundlePath = Bundle.main.bundlePath
        
        tableView.register(nib, forCellReuseIdentifier: cellId)
        //设置行高
        tableView.rowHeight = 360
        //设置分割线
        tableView.separatorStyle = .none
    }
    
    //按钮的监听事件
    @objc private func push() {
        let temp = HMTempViewController()
        navigationController?.pushViewController(temp, animated: true)
    }
    
    

}

//实现数据源方法
//UITableViewDataSource 重复继承某一个协议会报错
extension HMHomeTableViewController {
    
    //    override func numberOfSections(in tableView: UITableView) -> Int {
    //        return 1
    //    }
    
    // 数据源有数据 而且也reloadData了 但是没有执行数据源方法
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        //使用懒加载的好处 不需要考虑可选类型的使用
        return homeViewModel.viewmodelArray.count
    }
    
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        
        //使用这种方式自定义cell 需要提前注册
        let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! HMStatusCell
        
        let viewmodel = homeViewModel.viewmodelArray[indexPath.row]
        //视图的数据的绑定 依赖模型数据 但是不符合MVVM的设计思想
        //cell.textLabel?.text = viewmodel.status?.created_at
        cell.viewmodel = viewmodel
        print(viewmodel.status?.pic_urls?.last?.thumbnail_pic)
        print("~~~~~~~~~~~~~~~~~~~~~~")
        return cell
    }
    
}
